#ifndef _INTERACTMANAGER_H
#define _INTERACTMANAGER_H

///////////////////////////////////////////////////////////////////////////
//																		 //
//	Author:		Michael Mozdzierz										 //
//	Date:		11/01/2014												 //
//	Purpose:	Define the interaction manager, the interact manager	 //
//				should scan through the world, find possible			 //
//				interactions, and handle call backs for all interactions.//
//																		 //
///////////////////////////////////////////////////////////////////////////

struct IInteractable;

#include <vector>
using namespace std;

// manages all interactions in the game
class InteractManager
{
	vector<IInteractable*> interactors;

	InteractManager(void);
	virtual ~InteractManager(void);
public:

	void Update(float dt);
	void Draw(void);

	IInteractable* getInteractor(int index) { return interactors[index]; }

	unsigned int getNumInteractors(void) const { return interactors.size(); }

	void AddInteractor(IInteractable* interactor);
	void RemoveInteractor(IInteractable* interactor);

	static InteractManager* GetInstance(void)
	{
		static InteractManager instance;

		return &instance;
	}

};


#endif